<?php

/**
 * Subclass for performing query and update operations on the 'ct_control' table.
 *
 * 
 *
 * @package lib.model
 */ 
class CtControlPeer extends BaseCtControlPeer
{
  public static function loadDataFromFile($fileName,$eliminarRegistrosAnteriores=false)
  {
    if($eliminarRegistrosAnteriores)
      CtControlPeer::doDeleteAll();
    $resultado = array();
    $totalRegistrosCT=0;
    $archivoControl = @file(sfConfig::get('sf_upload_dir')."/".$fileName);
    if($archivoControl)
    {
      foreach ($archivoControl as $line_num => $line)
      {
        $datos = explode(",", $line);
        $archivoControl = new CtControl();
        $archivoControl->setEntidadPrestadoraId(trim($datos[0]));
        $archivoControl->setFecha(trim($datos[1]));
        $archivoControl->setCodigoArchivo(trim($datos[2]));
        $archivoControl->setTotalRegistros(trim($datos[3]));
        $archivoControl->setTotalRegistrosNumero(trim($datos[3]));
        $archivoControl->save();
        $totalRegistrosCT++;
      }
    }
    else
      $resultado['CT'] = array('No se pudo leer el archivo de control especificado');
    return $resultado;
  }
  /* ---------Valida cada archivo en su existencia y cantidad de registros ------ */
  public static function validateDataFiles($prefijos)
  {
    $resultado = array();
    //$prefijos = array('AF','US','AD','AC','AP','AH','AU','AN','AM','AT');
    foreach($prefijos  as $prefijo)
    {
      $result = CtControlPeer::validateDataFile($prefijo);
      $resultado['informacion'][$prefijo] = $result['informacion'];
      if(isset($result['errores']))
        $resultado['errores'][$prefijo] = $result['errores'];
    }
    return $resultado;
  }
  //Recibe en mayusculas el prefijo del archivo a validar. Por ejemplo US para el archivo de usuarios
  public static function validateDataFile($prefijo)
  {
    $resultado = array();
    //Archivo Transacciones
    $criteria = new Criteria();
    $criteria->add(CtControlPeer::CODIGO_ARCHIVO,$prefijo.'%', Criteria::LIKE);
    $archivoControl = CtControlPeer::doSelectOne($criteria);
    if($archivoControl)
    {
      $resultado['informacion']['nombre-archivo'] = $archivoControl->getCodigoArchivo();
      $archivo = @file(sfConfig::get('sf_upload_dir').'/'.$archivoControl->getCodigoArchivo().'.TXT');
      if($archivo)
      {
        $resultado['informacion']['registros-control'] = $archivoControl->getTotalRegistrosNumero();
        $resultado['informacion']['registros-archivo'] = count($archivo);

        if($archivoControl->getTotalRegistrosNumero()!=count($archivo))
          $resultado['errores'] = array("La cantidad de registros no concuerda con la registrada en el archivo de control.");
      }    
      else
        $resultado['errores'] = array("El nombre del archivo no concuerda con el registrado en el archivo de control.");
    }
    else
      $resultado['errores'] = array("El archivo de control no contiene un registro para el archivo.");
    return $resultado;
  }
}
